草庐IT

leetcode 2744

全部标签

leetcode 594. Longest Harmonious Subsequence 最长和谐子序列(简单).md

一、题目大意https://leetcode.cn/problems/longest-harmonious-subsequence和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给你一个整数数组nums,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。示例1:输入:nums=[1,3,2,2,5,2,3,7]输出:5解释:最长的和谐子序列是[3,2,2,2,3]示例2:输入:nums=[1,2,3,4]输出:2示例3:输入:nums=[1,1,1,1]输出:0提示:

leetcode 697. Degree of an Array 数组的度(简单)

一、题目大意https://leetcode.cn/problems/degree-of-an-array给定一个非空且只包含非负数的整数数组nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在nums中找到与nums拥有相同大小的度的最短连续子数组,返回其长度。示例1:输入:nums=[1,2,2,3,1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2。连续子数组里面拥有相同度的有如下所示:[1,2,2,3,1],[1,2,2,3],[2,2,3,1],[1,2,2],[2,2,3],[2,2]最短连续子数组[2,2]的长度为2,所以返回2。示例2:

leetcode 503. Next Greater Element II 下一个更大元素 II(中等)

一、题目大意https://leetcode.cn/problems/next-greater-element-ii给定一个循环数组nums(nums[nums.length-1]的下一个元素是nums[0]),返回nums中每个元素的下一个更大元素。数字x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。示例1:输入:nums=[1,2,1]输出:[2,-1,2]解释:第一个1的下一个更大的数是2;数字2找不到下一个更大的数;第二个1的下一个最大的数需要循环搜索,结果也是2。示例2:输入:nums=[1,

leetcode 560. Subarray Sum Equals K 和为 K 的子数组(中等)

一、题目大意https://leetcode.cn/problems/subarray-sum-equals-k给你一个整数数组nums和一个整数k,请你统计并返回该数组中和为k的连续子数组的个数。示例1:输入:nums=[1,1,1],k=2输出:2示例2:输入:nums=[1,2,3],k=3输出:2提示:1-1000-107二、解题思路三个思路,第一个:三层遍历,遍历i从0到n,第二层遍历j从i到n,第三层遍历i-j,求和,这种方法会超时第二个:求累加和sum[i]=num[0]-num[i-1],这样二层遍历得到(i,j),检查sum[j]-sum[i]第三个:定义一个hash来保存s

leetcode-数组中两元素的最大乘积

题目描述给你一个整数数组nums,请你选择数组的两个不同下标i和j,使(nums[i]-1)*(nums[j]-1)取得最大值。请你计算并返回该式的最大值。示例1:输入:nums=[3,4,5,2]输出:12解释:如果选择下标i=1和j=2(下标从0开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1)=(4-1)*(5-1)=3*4=12。示例2:输入:nums=[1,5,4,5]输出:16解释:选择下标i=1和j=3(下标从0开始),则可以获得最大值(5-1)*(5-1)=16。示例3:输入:nums=[3,7]输出:12提示:2来源:力扣(LeetCode)链接:htt

leetcode-数组中两元素的最大乘积

题目描述给你一个整数数组nums,请你选择数组的两个不同下标i和j,使(nums[i]-1)*(nums[j]-1)取得最大值。请你计算并返回该式的最大值。示例1:输入:nums=[3,4,5,2]输出:12解释:如果选择下标i=1和j=2(下标从0开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1)=(4-1)*(5-1)=3*4=12。示例2:输入:nums=[1,5,4,5]输出:16解释:选择下标i=1和j=3(下标从0开始),则可以获得最大值(5-1)*(5-1)=16。示例3:输入:nums=[3,7]输出:12提示:2来源:力扣(LeetCode)链接:htt

leetcode 146. LRU Cache LRU 缓存 (简单)

一、题目大意请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。voidput(intkey,intvalue)如果关键字key已经存在,则变更其数据值value;如果不存在,则向缓存中插入该组key-value。如果插入操作导致关键字数量超过capacity,则应该逐出最久未使用的关键字。函数get和put必须以O(1)的平均时间复杂度运行。示例:输入["LRUCache","p

leetcode 146. LRU Cache LRU 缓存 (简单)

一、题目大意请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。voidput(intkey,intvalue)如果关键字key已经存在,则变更其数据值value;如果不存在,则向缓存中插入该组key-value。如果插入操作导致关键字数量超过capacity,则应该逐出最久未使用的关键字。函数get和put必须以O(1)的平均时间复杂度运行。示例:输入["LRUCache","p

leetcode 380. Insert Delete GetRandom O(1) O(1) 时间插入、删除和获取随机元素 (中等)

一、题目大意实现RandomizedSet类:RandomizedSet()初始化RandomizedSet对象boolinsert(intval)当元素val不存在时,向集合中插入该项,并返回true;否则,返回false。boolremove(intval)当元素val存在时,从集合中移除该项,并返回true;否则,返回false。intgetRandom()随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。每个元素应该有相同的概率被返回。你必须实现类的所有函数,并满足每个函数的平均时间复杂度为O(1)。示例:输入["RandomizedSet","insert"

leetcode 380. Insert Delete GetRandom O(1) O(1) 时间插入、删除和获取随机元素 (中等)

一、题目大意实现RandomizedSet类:RandomizedSet()初始化RandomizedSet对象boolinsert(intval)当元素val不存在时,向集合中插入该项,并返回true;否则,返回false。boolremove(intval)当元素val存在时,从集合中移除该项,并返回true;否则,返回false。intgetRandom()随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。每个元素应该有相同的概率被返回。你必须实现类的所有函数,并满足每个函数的平均时间复杂度为O(1)。示例:输入["RandomizedSet","insert"